#ifndef SREXCELFILE_H
#define SREXCELFILE_H

#include <QObject>


class SRExcelFile : public QObject
{
    Q_OBJECT
public:
    explicit SRExcelFile(QObject *parent = nullptr);



// 自定义类型
private:

    struct stReadExcel {
        int nameNum_;
        int moneyNum_;
        int addrNum_;
        stReadExcel(void) : nameNum_(0),
            moneyNum_(2),addrNum_(1) {}
    };

// 自定义函数
public:

    bool isRead(void) const { return isRead_; }
    void stopRead(void) { isRead_ = false; }

    int getCurrentMaxLine(void) const { return maxLine_; }
    /**
     * @brief : excel 文件地址
     * @param : _filePath 文件地址
     */
    void setExcelAddr(QString _filePath) { excelFilePath_=_filePath; }

    /**
     * @brief : 设置待读取的地址列
     * @param : num 地址的列
     */
    void setExcelAddrCol(int num) { readExcelCol_.addrNum_=num; }

    /**
     * @brief : 设置待读取的名称列
     * @param : num 地址的列
     */
    void setExcelNameCol(int num) { readExcelCol_.nameNum_=num; }

    /**
     * @brief : 设置待读取的金额列
     * @param : num 地址的列
     */
    void setExcelMoneyCol(int num) { readExcelCol_.moneyNum_=num; }

private:

    void thread_readExcelData(int _beginLine, int _endLine);


// 信号槽
signals:

    // excel的数据流出接口
    void sigExcelData(int line, QString name,QString phone);

public slots:

    // 读取excel数据
    void onReadExcelData(int _beginLine = 0, int _endLine = -1);


// 自定义属性
private:
    std::atomic<bool> isRead_;

    // excel文件地址
    QString excelFilePath_;

    stReadExcel readExcelCol_;

    int maxLine_;


};

#endif // SREXCELFILE_H
